Commit 3d42d27a authored by Huangnan's avatar Huangnan

fix&ci update

parent 6eba1f82
...@@ -4,8 +4,8 @@ stages: ...@@ -4,8 +4,8 @@ stages:
variables: variables:
GIT_DEPTH: "1" GIT_DEPTH: "1"
LAST_UPDATE_DATE: "2025.1.6" LAST_UPDATE_DATE: "2025.2.12"
CURRENT_UPDATE_DATE: "2025.1.19" CURRENT_UPDATE_DATE: "2025.2.12"
redtext: redtext:
stage: prepare stage: prepare
...@@ -56,15 +56,15 @@ pack: ...@@ -56,15 +56,15 @@ pack:
- sed -i '/mono-project.com/d' /etc/apt/sources.list /etc/apt/sources.list.d/* - sed -i '/mono-project.com/d' /etc/apt/sources.list /etc/apt/sources.list.d/*
- apt update && apt -y install p7zip-full wget git - apt update && apt -y install p7zip-full wget git
- mkdir -p dist/archive dist/contents - mkdir -p dist/archive dist/contents
- git log --pretty=%H --since=$LAST_UPDATE_DATE | xargs -I {} git diff-tree --no-commit-id --name-only --diff-filter=ACMR -r {} | sed "/sound\//d;/update\//d;/.yml/d" | sort | uniq | sed "s/^/'/g;s/\$/'/g" | xargs 7z a -mx9 dist/archive/ygopro-FiNALE-DIY-update.7z || true - git log --pretty=%H --since=$LAST_UPDATE_DATE | xargs -I {} git diff-tree --no-commit-id --name-only --diff-filter=ACMR -r {} | sed "/sound\//d;/update\//d;/.yml/d" | sort | uniq | sed "s/^/'/g;s/\$/'/g" | xargs 7z -tzip -mx9 dist/archive/ygopro-FiNALE-DIY-update.zip || true
- git clone --depth=1 https://code.mycard.moe/alstroemeria-silentlove/ygopro-222DIY-sound sound - git clone --depth=1 https://code.moenext.com/alstroemeria-silentlove/ygopro-222DIY-sound sound
- wget -O update/filelist.txt https://cdn01.moecube.com/ygopro-222DIY/contents/update/filelist.txt || rm -rf update/filelist.txt - wget -O update/filelist.txt https://cdn01.moecube.com/ygopro-222DIY/contents/update/filelist.txt || rm -rf update/filelist.txt
- rm -rf .*.yml .git* sound/.git* - rm -rf .*.yml .git* sound/.git*
- cd update - cd update
- ./update-server.sh - ./update-server.sh
- cd .. - cd ..
- 7z a -mx9 dist/archive/ygopro-FiNALE-DIY-cards.7z expansions update - 7z -tzip -mx9 dist/archive/ygopro-FiNALE-DIY-cards.zip expansions update
- 7z a -mx9 dist/archive/ygopro-FiNALE-DIY-sound.7z sound - 7z -tzip -mx9 dist/archive/ygopro-FiNALE-DIY-sound.zip sound
- ls -1 | sed '/dist/d' | xargs -I {} mv {} dist/contents/ - ls -1 | sed '/dist/d' | xargs -I {} mv {} dist/contents/
artifacts: artifacts:
paths: paths:
...@@ -82,8 +82,8 @@ upload_to_minio: ...@@ -82,8 +82,8 @@ upload_to_minio:
image: python image: python
script: script:
- pip install -U -i https://mirrors.aliyun.com/pypi/simple/ awscli - pip install -U -i https://mirrors.aliyun.com/pypi/simple/ awscli
- cp dist/archive/ygopro-FiNALE-DIY-cards.7z dist/archive/ygopro-FiNALE-DIY-cards-$CURRENT_UPDATE_DATE.7z - cp dist/archive/ygopro-FiNALE-DIY-cards.zip dist/archive/ygopro-FiNALE-DIY-cards-$CURRENT_UPDATE_DATE.zip
- cp dist/archive/ygopro-FiNALE-DIY-update.7z dist/archive/ygopro-FiNALE-DIY-update-$CURRENT_UPDATE_DATE.7z - cp dist/archive/ygopro-FiNALE-DIY-update.zip dist/archive/ygopro-FiNALE-DIY-update-$CURRENT_UPDATE_DATE.zip
- aws s3 --endpoint=https://minio.mycard.moe:9000 sync dist/ s3://mycard/ygopro-222DIY > /dev/null - aws s3 --endpoint=https://minio.moenext.com:9000 sync dist/ s3://mycard/ygopro-222DIY > /dev/null
only: only:
- master - master
No preview for this file type
...@@ -79,7 +79,7 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp) ...@@ -79,7 +79,7 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst() local tc=eg:GetFirst()
while tc do while tc do
if tc:IsPreviousLocation(LOCATION_GRAVE) and tc:IsControler(tp) then if tc:IsPreviousLocation(LOCATION_GRAVE) and tc:IsControler(tp) then
Duel.RegisterFlagEffect(tp,id,0,0,0) Duel.RegisterFlagEffect(tc:GetSummonPlayer(),id,0,0,0)
end end
tc=eg:GetNext() tc=eg:GetNext()
end end
...@@ -141,7 +141,7 @@ end ...@@ -141,7 +141,7 @@ end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local tg=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,0,1,4,nil) local tg=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,0,1,4,nil)
if not tg then return end if not tc then return end
if Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)~=0 then if Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)~=0 then
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
......
...@@ -42,53 +42,6 @@ function c12847015.initial_effect(c) ...@@ -42,53 +42,6 @@ function c12847015.initial_effect(c)
e21:SetTarget(c12847015.negtg2) e21:SetTarget(c12847015.negtg2)
e21:SetOperation(c12847015.negop1) e21:SetOperation(c12847015.negop1)
c:RegisterEffect(e21) c:RegisterEffect(e21)
--counter
local e4=Effect.CreateEffect(c)
e4:SetDescription(1308)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_DRAW)
e4:SetCountLimit(1,12847015+EFFECT_COUNT_CODE_DUEL)
e4:SetRange(0xff)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e4:SetCondition(c12847015.con)
e4:SetOperation(c12847015.op1)
c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_INITIAL)
e1:SetCode(EVENT_PREDRAW)
e1:SetRange(0xff)
e1:SetCountLimit(1,12847016+EFFECT_COUNT_CODE_DUEL)
e1:SetOperation(c12847015.op2)
c:RegisterEffect(e1)
end
function c12847015.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(nil,e:GetHandlerPlayer(),LOCATION_DECK,0,nil)>=36
end
function c12847015.op1(e,tp,eg,ep,ev,re,r,rp)
if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,4202048) then return end
local g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,4202048)
g:AddCard(e:GetHandler())
if e:GetHandler():IsLocation(LOCATION_HAND) then Duel.Draw(e:GetHandlerPlayer(),1,REASON_RULE) end
for ec in aux.Next(g) do
Duel.Exile(ec,0)
end
Debug.Message("堕天计划已清除")
end
function c12847015.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
--act limit
local e1=Effect.CreateEffect(c)
e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_FORBIDDEN)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,1)
e1:SetTarget(c12847015.splimit)
Duel.RegisterEffect(e1,tp)
end
function c12847015.splimit(e,c)
return c:IsCode(4202048)
end end
function c12847015.cfilter(c) function c12847015.cfilter(c)
return c:IsFaceup() and c:IsDisabled() and c:IsType(TYPE_EFFECT) and c:IsReleasable() return c:IsFaceup() and c:IsDisabled() and c:IsType(TYPE_EFFECT) and c:IsReleasable()
...@@ -144,4 +97,101 @@ function c12847015.negop1(e,tp,eg,ep,ev,re,r,rp) ...@@ -144,4 +97,101 @@ function c12847015.negop1(e,tp,eg,ep,ev,re,r,rp)
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1) Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1)
end end
end end
end
function hack_proc(c)
--spsummon proc
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(function(e,c)
if c==nil then return true end
return true
end)
e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk,c)
local sg=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_HAND,0,nil)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return sg:GetCount()>0 else return false
end
end)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local sg = e:GetLabelObject()
if sg then
c:SetMaterial(sg)
Duel.Remove(sg,POS_FACEDOWN,REASON_SPSUMMON)
Duel.Hint(HINT_CARD,0,16199990)
end
end)
e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1)
end
local g=Duel.GetFieldGroup(0,LOCATION_EXTRA,LOCATION_EXTRA)
local tc=g:GetFirst()
check=false
while tc do
if c4202048 and getmetatable(tc)==c4202048 then
tc:ReplaceEffect(2511,0,0)
hack_proc(tc)
check=true
end
tc=g:GetNext()
end
function hack_initial(c)
c:EnableReviveLimit()
Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_SPSUMMON_CONDITION)
e0:SetValue(function(e,se,sp,st) return not e:GetHandler():IsLocation(LOCATION_EXTRA) end)
c:RegisterEffect(e0)
hack_proc(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_TO_HAND)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e3:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
if Duel.SelectYesNo(tp,aux.Stringid(4202048,0)) then
Duel.SpecialSummonRule(c:GetOwner(),e:GetHandler())
Debug.Message("堕天计划已清除")
end
end)
Duel.RegisterEffect(e3,0)
--spsummon
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
c:RegisterEffect(e4)
--spsummon cost
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetCode(EFFECT_SPSUMMON_COST)
e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE)
e5:SetRange(0xff)
e5:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
c:SetCardData(1,4202048)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(1,0)
e1:SetValue(1)
Duel.RegisterEffect(e1,tp)
end)
c:RegisterEffect(e5)
--self to grave
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SELF_TOGRAVE)
e1:SetRange(LOCATION_MZONE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
c:RegisterEffect(e1)
end
if not check then
c4202048=c12847015
c4202048.initial_effect=hack_initial
end end
\ No newline at end of file
...@@ -33,7 +33,7 @@ function cm.initial_effect(c) ...@@ -33,7 +33,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1820,2,REASON_COST) end if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1820,6,REASON_COST) end
Duel.RemoveCounter(tp,1,0,0x1820,2,REASON_COST) Duel.RemoveCounter(tp,1,0,0x1820,2,REASON_COST)
end end
......
...@@ -10,8 +10,9 @@ function cm.initial_effect(c) ...@@ -10,8 +10,9 @@ function cm.initial_effect(c)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0)) e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_SZONE) e1:SetRange(LOCATION_SZONE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,m) e1:SetCountLimit(1,m)
e1:SetCost(cm.spcost) e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg) e1:SetTarget(cm.sptg)
...@@ -21,8 +22,9 @@ function cm.initial_effect(c) ...@@ -21,8 +22,9 @@ function cm.initial_effect(c)
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1)) e2:SetDescription(aux.Stringid(m,1))
e2:SetCategory(CATEGORY_COUNTER) e2:SetCategory(CATEGORY_COUNTER)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetRange(LOCATION_SZONE) e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetCountLimit(1,m+1) e2:SetCountLimit(1,m+1)
e2:SetCost(cm.ctcost) e2:SetCost(cm.ctcost)
e2:SetTarget(cm.cttg) e2:SetTarget(cm.cttg)
......
...@@ -7,7 +7,7 @@ function c79100340.initial_effect(c) ...@@ -7,7 +7,7 @@ function c79100340.initial_effect(c)
--destroy --destroy
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(79100340,0)) e1:SetDescription(aux.Stringid(79100340,0))
e1:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_GRAVE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_DELAY) e1:SetProperty(EFFECT_FLAG_DELAY)
......
...@@ -36,6 +36,7 @@ function cm.initial_effect(c) ...@@ -36,6 +36,7 @@ function cm.initial_effect(c)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1,m+100) e3:SetCountLimit(1,m+100)
e3:SetCost(cm.chcost) e3:SetCost(cm.chcost)
e3:SetCondition(cm.limcon2)
e3:SetTarget(cm.chtg) e3:SetTarget(cm.chtg)
e3:SetOperation(cm.chop) e3:SetOperation(cm.chop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
...@@ -44,6 +45,9 @@ end ...@@ -44,6 +45,9 @@ end
function cm.limcon(e) function cm.limcon(e)
return e:GetHandler():GetSequence()<5 return e:GetHandler():GetSequence()<5
end end
function cm.limcon2(e)
return e:GetHandler():GetSequence()>=5
end
function cm.lfilter(c) function cm.lfilter(c)
return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_EFFECT) and c:IsType(TYPE_MONSTER) return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_EFFECT) and c:IsType(TYPE_MONSTER)
end end
......
...@@ -87,6 +87,7 @@ function cm.distg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -87,6 +87,7 @@ function cm.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
end end
function cm.disop(e,tp,eg,ep,ev,re,r,rp) function cm.disop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_PUBLIC) e1:SetCode(EFFECT_PUBLIC)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment